网络地址函数和操作符

最近更新时间: 2024-06-12 15:06:00

cidr 和 inet 操作符

cidr 和 inet 类型支持如下操作符:

操作符 描述
< 小于
<= 小于等于
= 等于
>= 大于等于
> 大于
<> 不等于
<< 被包含在内
<<= 被包含在内或等于
>> 包含
>>= 包含或等于
&& 包含或被包含
~ 按位 NOT
& 按位 AND
| 按位 OR
+
-

示例:

postgres=# SELECT inet '192.168.1.5' <= inet '192.168.1.5';
?column? 
----------
t
(1 row)

postgres=# SELECT inet '192.168.1.5' << inet '192.168.1/24';
?column? 
----------
t
(1 row)

postgres=# SELECT inet '192.168.1/24' && inet '192.168.1.80/28';
?column? 
----------
t
(1 row)

postgres=# SELECT inet '192.168.1.6' + 25;
 ?column? 
--------------
192.168.1.31
(1 row)

postgres=# SELECT inet '192.168.1.6' & inet '0.0.0.255';
?column? 
----------
0.0.0.6
(1 row)

cidr 和 inet 函数

函数 返回类型 描述
abbrev(inet) text 缩写显示格式文本
abbrev(cidr) text 缩写显示格式文本
broadcast(inet) inet 网络广播地址
family(inet) int 抽取地址族:4为 IPv4,6为 IPv6
host(inet) text 抽取 IP 地址为文本
hostmask(inet) inet 为网络构造主机掩码
masklen(inet) int 抽取网络掩码长度
netmask(inet) inet 为网络构造网络掩码
network(inet) cidr 抽取地址的网络部分
set_masklen(inet, int) inet 为 inet 值设置网络掩码长度
set_masklen(cidr, int) cidr 为 cidr 值设置网络掩码长度
text(inet) text 抽取 IP 地址和网络掩码长度为文本
inet_same_family(inet, inet) bool 地址是否来自同一个地址族
inet_merge(inet, inet) cidr 最小的网络包括给定的两个网络

示例:

postgres=# SELECT abbrev(inet '10.1.0.0/16');
 abbrev  
-------------
10.1.0.0/16
(1 row) 
postgres=# SELECT family('::1');
family 
--------
  6
(1 row)

postgres=# SELECT hostmask('192.168.23.20/30');
hostmask 
----------
0.0.0.3
(1 row)

postgres=# SELECT set_masklen('192.168.1.5/24', 16);
set_masklen 
----------------
192.168.1.5/16
(1 row)

postgres=# SELECT netmask('192.168.1.5/24');
 netmask  
---------------
255.255.255.0
(1 row)